﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;
//int main(int argc, char* argv[])
//
//{
//
//	string a = "hello world";
//
//	string b = a;
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else cout << "false" << endl;
//
//	string c = b;
//
//	c = "";
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else cout << "false" << endl;
//
//	a = "";
//
//	if (a.c_str() == b.c_str())
//
//	{
//
//		cout << "true" << endl;
//
//	}
//
//	else cout << "false" << endl;
//
//	return 0;
//
//}
//int main()
//{
//
//	string strText = "How are you?";
//
//	string strSeparator = " ";
//
//	string strResult;
//
//	int size_pos = 0;
//
//	int size_prev_pos = 0;
//
//	while ((size_pos = strText.find_first_of(strSeparator, size_pos)) != string::npos)
//
//	{
//
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//		cout << strResult << " ";
//
//		size_prev_pos = ++size_pos;
//
//	}
//
//	if (size_prev_pos != strText.size())
//
//	{
//
//		strResult = strText.substr(size_prev_pos, size_pos - size_prev_pos);
//
//		cout << strResult << " ";
//
//	}
//
//	cout << endl;
//
//	return 0;
//
//}

//int main()
//{
//	int a = 2;
//	int b = pow(a, 2);
//	cout << b;
//	return 0;
//}
//#include<iostream>
//#include<string>
//#include<math.h>
//class Solution {
//public:
//    int myAtoi(string str) {
//        const char* it = str.c_str();
//        int a = 0;
//        int n = 1;
//        int flag = 0;
//        while (*it != '\0')
//        {
//            while (*it == ' ') {
//                ++it;
//            }
//            if (*it == '-')
//            {
//                int flag = 1;
//            }
//            while (*it <= '9' && *it >= '0')
//            {
//                a += (*it - '0') * pow(10, n++);
//            }
//            it++;
//        }
//        if (flag == 1)
//        {
//            a *= (-1);
//        }
//        return a;
//    }
//};
//class Solution {
//public:
//    int myAtoi(string str) {
//        const char* it = str.c_str();
//        int sign = 1;
//        long result = 0;
//        //检查空格
//        while (*it == ' ')
//        {
//            ++it;
//        }
//        if (*it == '-')
//        {
//            sign = -1;
//            ++it;
//        }
//        else if (*it == '+')
//            ++it;
//        while (*it >= '0' && *it <= '9')
//        {
//
//            int a = *it - '0';
//            if (result > (INT_MAX - a) / 10) {
//                return sign == 1 ? INT_MAX : INT_MIN;
//            }
//            result = result * 10 + a;
//            ++it;
//        }
//        return result * sign;
//    }
//};
//int main()
//{
//    string s;
//    cout << "请输入一个字符串：";
//    getline(cin, s);
//    Solution S;
//    int a = S.myAtoi(s);
//    cout << a;
//    return 0;
//}
class string
{
public:
	//构造函数
	string(const char* str = "")
	{
		_size = strlen(str);
		_capacity = _size;
		_str = new char[_capacity + 1];
		strcpy(_str, str);
	}
	//拷贝构造：深拷贝
	string(const string& s)
	{
		_str = new char[s._capacity + 1];
		strcpy(_str, s._str);
		_capacity = s._capacity;
		_size = s._size;

	}
	//现代写法
	void swap(string& s)
	{
		std::swap(_str, s._str);
		std::swap(_size, s._size);
		std::swap(_capacity, s._capacity);
	}
	string(const string& s)
	{
		string tmp(s._str);
		swap(tmp);
	}
	//析构函数
	~string()
	{
		if (_str)
		{
			delete[] _str;
			_str = nullptr;
			_size = _capacity = 0;
		}
	}
private:
	char* _str;
	size_t _capacity;
	size_t _size;
};